Код:
//=============================================================================
// Phileas_PlayerMovementInversion.js
//=============================================================================
// [Update History]
// 2023.August.11 Ver1.0.0 First Release
// 2023.August.12 Ver1.1.0 Added save state parameter
// 2023.August.13 Ver1.1.1 The inversion state is reset when a new game starts
/*:
* @target MZ
* @plugindesc Inverts the player's movement control
* @author Phileas
*
* @param saveState
* @text Save state
* @type boolean
* @default true
* @desc If true, the inversion state will be restored when the save is loaded.
*
* @command switchInversion
* @text Switch the inversion
* @desc Enables or disables movement inversion.
*
* @arg horizontalInversion
* @text Horizontal inversion
* @type boolean
* @desc If this is on, the movement will be inverted horizontally.
* @default false
*
* @arg verticalInversion
* @text Vertical inversion
* @type boolean
* @desc If this is on, the movement will be inverted vertically.
* @default false
*
* @help
* The plugin provides a single command - switchInversion.
* You can use it to enable and disable horizontal and vertical inversions.
*
* [License]
* This plugin is released under MIT license.
* http://opensource.org/licenses/mit-license.php
*
* This means that you can freely use the plugin in non-commercial and commercial games and even edit it.
* But be sure to include me in the credits!
*/
/*:ru
* @target MZ
* @plugindesc Инверсирует управление движением игрока
* @author Phileas
*
* @param saveState
* @text Сохранять состояние
* @type boolean
* @default true
* @desc Если true, состояние инверсии будет восстаналиваться при загрузке сохранения.
*
* @command switchInversion
* @text Switch the inversion
* @desc Enables or disables movement inversion.
*
* @arg horizontalInversion
* @text Horizontal inversion
* @type boolean
* @desc Если этот параметр включён, перемещение будет перевёрнуто по горизонтали.
* @default false
*
* @arg verticalInversion
* @text Vertical inversion
* @type boolean
* @desc Если этот параметр включен, перемещение будет перевернуто по вертикали.
* @default false
*
* @help
* Плагин предоставляет единственную команду - switchInversion.
* С помощью неё вы можете включить и выключить горизонтальную и вертикальную инверсии.
*
* [License]
* Этот плагин распространяется по лицензии MIT.
* http://opensource.org/licenses/mit-license.php
*
* Это означает, что вы можете свободно использовать плагин в некоммерческих и коммерческих играх и даже редактировать его.
* Но обязательно укажите меня в титрах!
*/
(function() {
//--------MY CODE:
var parameters = PluginManager.parameters("Phileas_PlayerMovementInversion");
var saveState = parameters["saveState"] == "true";
var horizontalInversion = false;
var verticalInversion = false;
PluginManager.registerCommand("Phileas_PlayerMovementInversion", "switchInversion", switchInversion);
function switchInversion(params) {
horizontalInversion = params["horizontalInversion"] == "true";
verticalInversion = params["verticalInversion"] == "true";
}
//--------CHANGED CORE:
const Origin_move = Game_Player.prototype.moveByInput;
Game_Player.prototype.moveByInput = function() {
if (horizontalInversion) {
if (Input._dir4 == 4) {
Input._dir4 = 6;
}
else if (Input._dir4 == 6) {
Input._dir4 = 4;
}
}
if (verticalInversion) {
if (Input._dir4 == 8) {
Input._dir4 = 2;
}
else if (Input._dir4 == 2) {
Input._dir4 = 8;
}
}
Origin_move.call(this);
};
const Origin_makeSaveContents = DataManager.makeSaveContents;
DataManager.makeSaveContents = function() {
let contents = Origin_makeSaveContents.call(this);
if (saveState) {
contents.phileasHorizontalInversion = horizontalInversion;
contents.phileasVerticalInversion = verticalInversion;
}
return contents;
};
const Origin_extractSaveContents = DataManager.extractSaveContents;
DataManager.extractSaveContents = function(contents) {
Origin_extractSaveContents.call(this, contents);
if (saveState) {
horizontalInversion = contents.phileasHorizontalInversion || false;
verticalInversion = contents.phileasVerticalInversion || false;
}
};
const Origin_setupNewGame = DataManager.setupNewGame;
DataManager.setupNewGame = function() {
Origin_setupNewGame.call(this);
horizontalInversion = false;
verticalInversion = false;
};
}());
Социальные закладки